{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7b3805cd-e054-4c0d-a6d7-723e8aa45288",
   "metadata": {},
   "source": [
    "Chapter 02\n",
    "\n",
    "# 方差分析\n",
    "Book_7《机器学习》 | 鸢尾花书：从加减乘除到机器学习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0fa7f216-879b-452e-a08b-57acc19a39a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import scipy.stats as stats\n",
    "import statsmodels.api as sm\n",
    "import yfinance as yf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2963d1d0-d1c5-4cf8-9a3c-3e1ed2d5d92a",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = plt.rcParams\n",
    "p[\"font.sans-serif\"] = [\"Roboto\"]\n",
    "p[\"font.weight\"] = \"light\"\n",
    "p[\"ytick.minor.visible\"] = False\n",
    "p[\"xtick.minor.visible\"] = False\n",
    "p[\"axes.grid\"] = True\n",
    "p[\"grid.color\"] = \"0.5\"\n",
    "p[\"grid.linewidth\"] = 0.5"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7f3aa73-a03c-4d60-a641-b627ba27344d",
   "metadata": {},
   "source": [
    "## 下载、处理数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c5cc6a4a-72e7-4e56-b0ff-2dbfd85bb09b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[*********************100%%**********************]  2 of 2 completed\n"
     ]
    }
   ],
   "source": [
    "y_x_df = yf.download(['AAPL','^GSPC'], start='2020-01-01', end='2020-12-31')\n",
    "y_x_df = y_x_df['Adj Close'].pct_change()\n",
    "y_x_df.dropna(inplace = True)\n",
    "\n",
    "y_x_df.rename(columns={\"^GSPC\": \"SP500\"},inplace = True)\n",
    "x_df = y_x_df[['SP500']]\n",
    "y_df = y_x_df[['AAPL']]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1790fe3b-f008-4fdb-9af8-d523b039b4d6",
   "metadata": {},
   "source": [
    "## 线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "7979a2d5-e29a-4fff-aff4-e953e7123f84",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                   AAPL   R-squared:                       0.689\n",
      "Model:                            OLS   Adj. R-squared:                  0.687\n",
      "Method:                 Least Squares   F-statistic:                     550.5\n",
      "Date:                Thu, 23 Nov 2023   Prob (F-statistic):           5.16e-65\n",
      "Time:                        14:42:03   Log-Likelihood:                 675.37\n",
      "No. Observations:                 251   AIC:                            -1347.\n",
      "Df Residuals:                     249   BIC:                            -1340.\n",
      "Df Model:                           1                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const          0.0019      0.001      1.819      0.070      -0.000       0.004\n",
      "SP500          1.1234      0.048     23.462      0.000       1.029       1.218\n",
      "==============================================================================\n",
      "Omnibus:                       52.109   Durbin-Watson:                   1.871\n",
      "Prob(Omnibus):                  0.000   Jarque-Bera (JB):              210.794\n",
      "Skew:                           0.772   Prob(JB):                     1.69e-46\n",
      "Kurtosis:                       7.216   Cond. No.                         46.0\n",
      "==============================================================================\n",
      "\n",
      "Notes:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
     ]
    }
   ],
   "source": [
    "# 增加一列全1\n",
    "X_df = sm.add_constant(x_df)\n",
    "\n",
    "model = sm.OLS(y_df, X_df)\n",
    "results = model.fit()\n",
    "print(results.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab2635d8-68e5-42ae-8972-ba436939eaf0",
   "metadata": {},
   "source": [
    "## ANOVA表格"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "557b6fed-52d7-4717-99ad-17f4f60ddc05",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             df    sum_sq   mean_sq           F        PR(>F)\n",
      "x           1.0  0.149487  0.149487  550.451466  5.162541e-65\n",
      "Residual  249.0  0.067621  0.000272         NaN           NaN\n"
     ]
    }
   ],
   "source": [
    "from statsmodels.formula.api import ols\n",
    "from statsmodels.stats.anova import anova_lm\n",
    "\n",
    "data = pd.DataFrame({'x': x_df['SP500'], 'y': y_df['AAPL']})\n",
    "model_V2 = ols(\"y ~ x\", data).fit()\n",
    "anova_results = anova_lm(model_V2, typ=1)\n",
    "\n",
    "print(anova_results)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1068f032-d215-4ac1-ab9a-14fb49ffe9d9",
   "metadata": {},
   "source": [
    "## 分析方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d162f9c9-44ba-4c37-8414-5eef7198ca1a",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_mean = y_df.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8b471bb2-be84-4063-a554-d8400dbce4d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AAPL    0.217108\n",
      "dtype: float64\n",
      "251\n"
     ]
    }
   ],
   "source": [
    "# Sum of Squares for Total, SST\n",
    "SST = ((y_df - y_mean)**2).sum()\n",
    "print(SST)\n",
    "n = len(y_df)\n",
    "print(n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "76c6574c-4df7-447b-8fba-07ff66726681",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AAPL    0.000868\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# degree of freedom total, DFT\n",
    "DFT = n - 1\n",
    "# mean square total, MST\n",
    "MST = SST/DFT\n",
    "print(MST)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "351812bc-ca4c-4d81-9860-11f02f1dfda4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "statsmodels.regression.linear_model.RegressionResultsWrapper"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4ebd9d5-5129-4100-ba0e-5e2d0415f6b8",
   "metadata": {},
   "source": [
    "请大家参考如下链接，获取statsmodels.regression.linear_model.RegressionResultsWrapper中的methods和properties  \n",
    "https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.RegressionResults.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7dba23f0-ce06-4616-8999-ec759a7b2086",
   "metadata": {},
   "outputs": [],
   "source": [
    "# predicted\n",
    "y_hat = results.fittedvalues\n",
    "\n",
    "y_hat = y_hat.to_frame()\n",
    "y_hat = y_hat.rename(columns={0: 'AAPL'})\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "1318b0ad-b6b3-418f-a48c-216494d7f487",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AAPL    0.149487\n",
      "dtype: float64\n",
      "AAPL    0.149487\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# Sum of Squares for Regression, SSR\n",
    "SSR = ((y_hat - y_mean)**2).sum()\n",
    "print(SSR)\n",
    "# degrees of freedom for regression model\n",
    "DFR = 1\n",
    "# MSR: mean square regression\n",
    "MSR = SSR/DFR\n",
    "print(MSR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "3ca1cd83-67f4-4a14-8527-09a93a14ba9b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AAPL    0.067621\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# Sum of Squares for Error, SSE\n",
    "SSE = ((y_df - y_hat)**2).sum()\n",
    "print(SSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5d65a9e6-5669-4973-8e90-2e401c6f342f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# degrees of freedom for error, DFE\n",
    "DFE = n - DFR - 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "32e2b5b9-a754-4307-afd8-ef32251efe88",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AAPL    0.000272\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# mean squared error, MSE\n",
    "MSE = SSE/DFE\n",
    "print(MSE)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd51bffc-00d4-4682-91e5-bcd6679b30b9",
   "metadata": {},
   "source": [
    "## 拟合优度\n",
    "Goodness of fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "80c1eefd-d259-4ba9-9fe7-ff2c6b898d79",
   "metadata": {},
   "outputs": [],
   "source": [
    "# coefficient of determination, R squared\n",
    "\n",
    "# 计算决定系数\n",
    "R2 = SSR/SST\n",
    "\n",
    "# 计算修正决定系数\n",
    "R2_adj = 1 - MSE/MST"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0df1f025-2b03-4ac4-9c06-7077d7fb1fc0",
   "metadata": {},
   "source": [
    "## F-test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "66f83d63-77e6-4557-9b35-3d801fa836b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AAPL    550.451466\n",
      "dtype: float64\n",
      "550.4514656002331\n"
     ]
    }
   ],
   "source": [
    "# 计算F检验的统计量\n",
    "F_test = MSR/MSE\n",
    "print(F_test)\n",
    "\n",
    "# 验算F检验的统计量\n",
    "N = results.nobs\n",
    "k = results.df_model+1\n",
    "dfm, dfe = k-1, N - k\n",
    "F = results.mse_model / results.mse_resid\n",
    "print(F)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "45b022c6-393a-4e5c-a2d2-a0adb6d27bd8",
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy.stats as stats\n",
    "p = 1.0 - stats.f.cdf(F,dfm,dfe)\n",
    "\n",
    "alpha = 0.01\n",
    "# F = 549.7\n",
    "# n = 252\n",
    "# D = 1\n",
    "# p = D + 1\n",
    "\n",
    "fdistribution = stats.f(p - 1, n - p) \n",
    "# build an F-distribution object\n",
    "f_critical = fdistribution.ppf(1 - alpha)\n",
    "\n",
    "p_value = 1 - stats.f.cdf(F, p - 1, n - p)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f8b0251-e3a9-4564-9298-97a6c659690b",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "dbda4df0-748d-4396-9cd9-afa8ee64e783",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_points = x_df.values.T\n",
    "y_points = y_df.values.T\n",
    "y_hat_points = y_hat.values.T\n",
    "\n",
    "p = model.fit().params\n",
    "\n",
    "# generate x-values for  regression line\n",
    "x = np.linspace(x_df.min(),x_df.max(),10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "b161a681-1c49-454a-9f9d-67f697a6333d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.15, 0.15)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "plt.scatter(x_df, y_df, alpha = 0.5)\n",
    "plt.plot(x_points,y_hat_points,'+k'); \n",
    "\n",
    "plt.plot(x, p.const + p.SP500 * x,color = 'r')\n",
    "plt.plot(np.vstack((x_points,x_points)),\n",
    "     np.vstack((y_points,y_hat_points)),\n",
    "     color = [0.7,0.7,0.7], zorder = 1);\n",
    "\n",
    "plt.axis('scaled')\n",
    "plt.ylabel('y')\n",
    "plt.xlabel('x')\n",
    "plt.xlim([-0.15,0.15])\n",
    "plt.ylim([-0.15,0.15])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
